<?php

class visitaVaziaMd extends Object{
    
    public $vis = null;
    public $eq  = null;
    private $pkey = '';
    public function __construct() {
        $this->LoadModel('venda/visita', 'vis');
        $this->LoadModel('venda/equipe', 'eq');
        $this->pkey = $this->vis->getPkey();
    }
    
    /**
    * Cria uma nova visita vazia
    * @return int o código da visita criada ou false caso não consiga criar
    */
    public function getEmpty($cod_empresa, $cod_usuario){
        $wh = "cod_usuario = '$cod_usuario' AND venda_visita_bdstatus = 'unsaved' AND venda_empresa_cod = '$cod_empresa'";
        $var = $this->vis->selecionar(array($this->pkey), $wh);
        if(empty($var)){
            $ev = $this->getEvent();
            $wh = "venda_evento_cod = '$ev' AND venda_empresa_cod = '$cod_empresa'";
            $var = $this->vis->selecionar(array($this->pkey), $wh);
            if(empty($var)) return $this->addEmptyVisitaInDatabase($cod_usuario, $ev, $cod_empresa);
            $var = array_shift($var);
            Redirect('venda/visita/show/'.$var[$this->pkey]);
        }
        $var = array_shift($var);
        return $var[$this->pkey];
    }
    
    /**
     * Retorna um evento ativo de uma equipe
     * @return String Retorna um <b>evento ativo</b> da equipe, ou <b>vazio</b> caso exista mais de um evento ativo
     */
    private function getEvent(){
        $eventos = $this->eq->getEventosAtivosDaEquipe($_SESSION['venda/equipe']);
        $ev = "";
        if(count($eventos) > 1){
            $this->LoadModel('venda/integrante', 'int');
            if(!$this->int->proxEvLiberado()) $ev = $this->eq->getActiveEventOfUser();
        }else $ev = $this->eq->getActiveEventOfUser();
        return $ev;
    }

    /**
     * Adicionar uma visita vazia no banco de dados
     * @param int $cod_usuario <p>Código do vendedor que está realizando a visita</p>
     * @param string $ev <p>Código do evento que será criado, pode ser uma string vazia ou um inteiro</p>
     * @param string $cod_empresa <p>Código da empresa que está recebendo a visita</p>
     * @return int false caso não consiga inserir, o código da visita criada caso contrário
     */
    private function addEmptyVisitaInDatabase($cod_usuario, $ev, $cod_empresa){
        if($ev == "")$ev = $this->eq->getActiveEventOfUser();
        $this->LoadModel('venda/funcionario', 'fc');
        $dados['cod_usuario']           = $cod_usuario;
        $dados['venda_equipe_cod']      = $this->eq->getCodEquipeOfUser();
        $dados['venda_evento_cod']      = $ev;
        $dados['venda_empresa_cod']     = $cod_empresa;
        $dados['venda_funcionario_cod'] = $this->fc->getOneEmployeeFromCompany($cod_empresa);
        $dados['venda_contato_cod']     = '1';
        $dados['venda_visita_bdstatus'] = 'unsaved';            
        if(!$this->vis->inserir($dados)){
            $this->setMessages($this->vis->getMessages());
            return false;
        }
        $this->setMessages($this->vis->getMessages());
        return $this->vis->getLastId();
    }
            
}

?>